package com.hzp.micromall.admin.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hzp.micromall.admin.entity.UmsMenu;
import com.hzp.micromall.admin.entity.UmsResource;
import com.hzp.micromall.admin.entity.UmsRole;
import com.hzp.micromall.common.core.api.CommonPage;
import org.apache.ibatis.annotations.Param;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @Author houzipeng
 * @Date 2022/2/24 23:05
 * @Version 1.0
 * 后台角色管理Service
 */
public interface UmsRoleService {
    /**
     * 添加角色
     */
    int createRole(UmsRole role);

    /**
     * 修改角色信息
     */
    int updateRoleById(Long id, UmsRole role);

    /**
     * 批量删除角色
     */
    int deleteRoleBatchById(List<Long> ids);

    /**
     * 获取所有角色列表
     */
    List<UmsRole> list();

    /**
     * 分页获取角色列表
     */
    CommonPage<UmsRole> listPage(String keyword, Integer pageSize, Integer pageNum);

    /**
     * 获取角色Id获取相关菜单
     */
    List<UmsMenu> getMenuListByRoleId(Long roleId);

    /**
     * 根据角色ID获取资源
     */
    List<UmsResource> getResourceListByRoleId(@Param("roleId") Long roleId);

    /**
     * 给角色分配菜单
     */
    @Transactional
    int allocMenu(Long roleId, List<Long> menuIds);

    /**
     * 给角色分配资源
     */
    @Transactional
    int allocResource(Long roleId, List<Long> resourceIds);
}
